CSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒã®åãæ¢æ±ããå¹ççã§ä¿å®æ§ã®é«ããŠã§ããã¶ã€ã³ã®ããã®æ¬äŒŒã¯ã©ã¹æ¡åŒµãšåå©çšæ§ã«çŠç¹ãåœãŠãŸããã°ããŒãã«ãªèªè åãã®å®çšçãªäŸã亀ããé«åºŠãªã¹ã¿ã€ãªã³ã°ã«ãŒã«ãäœæããæ¹æ³ãåŠã³ãŸãã
CSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒïŒæ¬äŒŒã¯ã©ã¹æ©èœã匷åããåå©çšæ§ãä¿é²ãã
ããã³ããšã³ãéçºãåžžã«é²åããäžã§ãCSSã¯èŠèŠçã«é åçã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªã€ã³ã¿ãŒãã§ãŒã¹ã®èŠã§ããç¶ããŠããŸããæšæºã®CSSã»ã¬ã¯ã¿ãŒã¯ã¹ã¿ã€ãªã³ã°ã®å ç¢ãªåºç€ãæäŸããŸãããã¹ã¿ã€ãªã³ã°ããžãã¯ãæ¡åŒµããã³åå©çšããèœåã¯ãã¹ã±ãŒã©ãã«ã§ä¿å®æ§ã®é«ããããžã§ã¯ããæ§ç¯ããããã«äžå¯æ¬ ã§ããããã«ãCSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãç¹ã«æ¬äŒŒã¯ã©ã¹ã®æ©èœã掻çšããã³æ¡åŒµãããã®ãç»å ŽããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãæ¬äŒŒã¯ã©ã¹ã®åŒ·åãšåå©çšæ§ã®ä¿é²ã«ç¹ã«éç¹ã眮ããCSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒã®æŠå¿µãæãäžããã°ããŒãã«ãªèªè åãã«æŽå¯ãšå®çšçãªäŸãæäŸããŸãã
é«åºŠãªã»ã¬ã¯ã¿ãŒã®å¿ èŠæ§ãçè§£ãã
ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®è€éããå¢ãã«ã€ããŠããããã现ããå¹ççãªã¹ã¿ã€ãªã³ã°ã®å¿ èŠæ§ãé«ãŸããŸããåºæ¬çãªèŠçŽ ãã¯ã©ã¹ãããã³IDã»ã¬ã¯ã¿ãŒã®ã¿ã«äŸåãããšã次ã®åé¡ãçºçããå¯èœæ§ããããŸãã
- åé·ã§å埩çãªã³ãŒãïŒè€æ°ã®èŠçŽ ã«åæ§ã®ã¹ã¿ã€ãªã³ã°ãã¿ãŒã³ãé©çšãããšéè€ãçããã³ãŒãããŒã¹ã®ç®¡çãé£ãããªããŸãã
- ã¡ã³ããã³ã¹ã®æªå€¢ïŒå€ãã®å Žæã§ç¹°ãè¿ãããŠããã¹ã¿ã€ã«ãæŽæ°ããããšã¯ãéå±ã§ãšã©ãŒãçºçããããããã»ã¹ã«ãªããŸãã
- éå®çãªåçã¹ã¿ã€ãªã³ã°ïŒè€éãªãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãæ¡ä»¶ä»ãç¶æ ãæ±ãå Žåãæšæºã»ã¬ã¯ã¿ãŒã§ã¯äžååãªããšããããããŸãã
:hoverã:focusã:nth-child()ãªã©ã®æ¬äŒŒã¯ã©ã¹ã¯ãèŠçŽ ã®ç¶æ
ãäœçœ®ã«åºã¥ããŠã¹ã¿ã€ã«ãèšå®ããããã®åŒ·åãªæ¹æ³ããã§ã«æäŸããŠããŸããããããé«åºŠãªã¹ã¿ã€ãªã³ã°ã®çã®å¯èœæ§ã¯ããããã®æ©èœã匷åããããã©ã«ãã®æäŸç¯å²ãè¶
ããåå©çšå¯èœãªãã¿ãŒã³ãäœæããããšã«ãããŸãã
CSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãšã¯ïŒ
ãCSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒããšããçšèªã¯ããã€ãã®æ¹æ³ã§è§£éã§ããŸãããæ¬äŒŒã¯ã©ã¹æ©èœã®åŒ·åãšåå©çšæ§ã®æèã§ã¯ãäž»ã«æ¬¡ã®ããšãæããŸãã
- æ¢åã®æ¬äŒŒã¯ã©ã¹ãåµé çã«æŽ»çšããïŒæšæºã®æ¬äŒŒã¯ã©ã¹ãæŽç·Žãããæ¹æ³ã§çµã¿åãããŠãã¹ãããŸãã
- æ¬äŒŒã¯ã©ã¹ç¶æ ãæã€ãŠãŒãã£ãªãã£ã¯ã©ã¹ïŒå ±éã®æ¬äŒŒã¯ã©ã¹ã®åäœãã«ãã»ã«åããåå©çšå¯èœãªãŠãŒãã£ãªãã£ã¯ã©ã¹ãäœæããŸãã
- CSSææ³ãéããæŠå¿µçãªãã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãïŒåœåèŠåãšã¢ãŒããã¯ãã£ãã¿ãŒã³ïŒBEMãOOCSSããŠãŒãã£ãªãã£ãã¡ãŒã¹ãCSSãªã©ïŒã䜿çšããŠãæ¬äŒŒã¯ã©ã¹ããžãã¯ããã°ãã°çµã¿èŸŒãäºæž¬å¯èœã§åå©çšå¯èœãªã¹ã¿ã€ãªã³ã°åäœãäœæããŸãã
- å°æ¥ã®CSSæ©èœïŒæ°èïŒïŒãŸã åºããµããŒããŸãã¯æšæºåãããŠããŸããããCSSã«ãããããé«åºŠãªã»ã¬ã¯ã¿ãŒæ©èœã«é¢ããè°è«ãšéçºãé²è¡äžã§ãã
ãã®èšäºã®ç®çã®ããã«ãç§ãã¡ã¯çŸä»£ã®ãŠã§ãéçºã«ãããŠæ¬äŒŒã¯ã©ã¹ã®æ¡åŒµãšåå©çšæ§ãå¯èœã«ãããå®çšçã§çŸåšå®è£ å¯èœãªæŠç¥ã«çŠç¹ãåœãŠãŸãã
æ¬äŒŒã¯ã©ã¹æ©èœã®æ¡åŒµ
æ¬äŒŒã¯ã©ã¹ã¯ãèŠçŽ ã®ç¶æ ãäœçœ®ããŸãã¯ãã®ä»ã®ç¹æ§ã«åºã¥ããŠã¹ã¿ã€ã«ãèšå®ããããã®åŒ·åãªããŒã«ã§ããä»ã®ã»ã¬ã¯ã¿ãŒãšçµã¿åãããããåäœãã«ãã»ã«åãããã¿ãŒã³ãäœæãããããããšã§ããã®æ©èœãæ¡åŒµã§ããŸãã
1. æ¬äŒŒã¯ã©ã¹ã®é«åºŠãªçµã¿åãã
æ¬äŒŒã¯ã©ã¹ã®çã®åã¯ãä»ã®ã»ã¬ã¯ã¿ãŒãæ¬äŒŒã¯ã©ã¹ãšçµã¿åããããšãã«ãã°ãã°çŸããŸããããã«ãããéåžžã«å ·äœçã§åçãªã¹ã¿ã€ãªã³ã°ãå¯èœã«ãªããŸãã
äŸïŒãã©ãŒã«ã¹ããã³ãããŒç¶æ ãæã€ã€ã³ã¿ã©ã¯ãã£ãèŠçŽ ã®ã¹ã¿ã€ãªã³ã°
äžé£ã®ãã¿ã³ãããããã©ãŒã«ã¹æãšãããŒæã®äž¡æ¹ã§æç¢ºãªèŠèŠçãã£ãŒãããã¯ããããã埮åŠãªã¢ãã¡ãŒã·ã§ã³ãè²ã®å€åãå¿ èŠãªå ŽåãèããŠã¿ãŸããããåå¥ã®ã«ãŒã«ã§ã¯ãªããè€åã»ã¬ã¯ã¿ãŒãå®çŸ©ã§ããŸãã
.button {
padding: 10px 20px;
border: 1px solid #ccc;
background-color: #f0f0f0;
cursor: pointer;
transition: all 0.3s ease;
}
.button:hover,
.button:focus {
background-color: #e0e0e0;
border-color: #aaa;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
}
/* Targeting a specific button state, e.g., when it's active */
.button:active {
background-color: #d0d0d0;
transform: translateY(1px);
}
ããã§ã¯ã.button:hoverãš.button:focusãçµã¿åããããŠããŸãã:activeæ¬äŒŒã¯ã©ã¹ã¯ããã¿ã³ãæŒãããŠãããšãã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãããã«æŽç·ŽãããŸãã
äŸïŒç¹å®ã®æ§é çã³ã³ããã¹ãå ã®èŠçŽ ã®ã¹ã¿ã€ãªã³ã°
:nth-child()ããã³:nth-of-type()æ¬äŒŒã¯ã©ã¹ã¯ã芪å
ã§ã®äœçœ®ã«åºã¥ããŠèŠçŽ ãã¹ã¿ã€ãªã³ã°ããã®ã«éåžžã«è²Žéã§ãããããã屿§ã»ã¬ã¯ã¿ãŒãä»ã®æ¬äŒŒã¯ã©ã¹ãšçµã¿åãããŠãããå
·äœçãªã¿ãŒã²ãã£ã³ã°ãè¡ãããšãã§ããŸãã
/* Style every third list item in an unordered list */
ul li:nth-child(3n) {
background-color: #f9f9f9;
}
/* Style focusable input fields within a specific form section */
.user-profile input:focus {
border-color: steelblue;
outline: none;
}
/* Style disabled checkboxes with a custom appearance */
input[type="checkbox"]:disabled {
opacity: 0.5;
cursor: not-allowed;
}
input[type="checkbox"]:disabled + label {
color: #999;
}
ãããã®äŸã¯ãæ¬äŒŒã¯ã©ã¹ãã³ã³ããã¹ãã»ã¬ã¯ã¿ãŒïŒå±æ§ã»ã¬ã¯ã¿ãŒãåå«ã³ã³ãããŒã¿ãŒãªã©ïŒãšçµã¿åãããããšã§ãããã«æ£ç¢ºãªå¶åŸ¡ãå¯èœã«ãªããã瀺ããŠããŸãã
2. ã«ã¹ã¿ã æ¬äŒŒã¯ã©ã¹ïŒæŠå¿µç/ãã¿ãŒã³ããŒã¹ïŒ
CSSã¯:myCustomStateã®ãããªæ°ããæ¬äŒŒã¯ã©ã¹ããã€ãã£ãã«å®çŸ©ããããšãèš±å¯ããŠããŸããããã¯ã©ã¹ãšJavaScriptã®çµã¿åããããŸãã¯å
ç¢ãªCSSææ³ãæ¡çšããããšã§ãããã·ãã¥ã¬ãŒãã§ããŸãã
ã¯ã©ã¹ãšJavaScriptã«ããã«ã¹ã¿ã ç¶æ ã®ã·ãã¥ã¬ãŒã·ã§ã³
äžè¬çãªãã¿ãŒã³ã¯ãJavaScriptã¯ã©ã¹ã䜿çšããŠã«ã¹ã¿ã ç¶æ ã衚ãããã®ã¯ã©ã¹ããã€ãã£ãæ¬äŒŒã¯ã©ã¹ãšäžç·ã«ã¹ã¿ã€ã«èšå®ããããšã§ããããšãã°ããis-activeããŸãã¯ãis-expandedãã®ç¶æ ã§ãã
.accordion-header {
/* Default styles */
}
.accordion-header.is-active {
background-color: lightblue;
font-weight: bold;
}
/* Combining with native pseudo-classes */
.accordion-header:hover,
.accordion-header.is-active:hover {
background-color: steelblue;
color: white;
}
.accordion-header:focus {
outline: 2px solid blue;
}
ãã®ã·ããªãªã§ã¯ãJavaScriptãèŠçŽ ã®is-activeã¯ã©ã¹ãåãæ¿ããŸããCSSã¯ãã®ã¯ã©ã¹ããå€ãã®å Žåãã€ãã£ãæ¬äŒŒã¯ã©ã¹ãšçµã¿åãããŠäœ¿çšãããã®ã«ã¹ã¿ã ç¶æ
ã®å€èгãå®çŸ©ããŸãã
3. åçæ¬äŒŒã¯ã©ã¹ã¹ã¿ã€ãªã³ã°ã®ããã®CSS倿°æŽ»çš
CSSã«ã¹ã¿ã ããããã£ïŒå€æ°ïŒã¯ãæ¬äŒŒã¯ã©ã¹å ã§äœ¿çšããŠãåçã§åå©çšå¯èœãªã¹ã¿ã€ãªã³ã°å€ãäœæã§ããŸãã
:root {
--primary-color: #007bff;
--hover-color: #0056b3;
--focus-outline-color: #28a745;
}
.btn-custom {
background-color: var(--primary-color);
color: white;
padding: 10px 15px;
border: none;
cursor: pointer;
transition: background-color 0.3s ease;
}
.btn-custom:hover {
background-color: var(--hover-color);
}
.btn-custom:focus {
outline: 3px solid var(--focus-outline-color);
outline-offset: 2px;
}
/* Example using a custom property within a pseudo-class for specific element states */
.menu-item:nth-child(even) {
--menu-bg-color: #f8f9fa;
}
.menu-item:nth-child(odd) {
--menu-bg-color: #ffffff;
}
.menu-item {
background-color: var(--menu-bg-color);
padding: 15px;
border-bottom: 1px solid #eee;
}
.menu-item:hover {
background-color: #007bff;
color: white;
}
ãã®ã¢ãããŒãã«ãããCSS倿°ã1ãæã§æŽæ°ããã ãã§ãããŸããŸãªç¶æ ã®ã«ãã¯ã¢ã³ããã£ãŒã«ãéåžžã«ç°¡åã«å€æŽã§ããŸãã
ã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒã«ããåå©çšæ§ã®ä¿é²
åå©çšæ§ã¯ãå¹ççãªããã³ããšã³ãéçºã®åºç€ã§ããã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒã¯ãé©åã«æ§é åãããŠããå Žåãã¢ãžã¥ãŒã«åŒã§ã¹ã±ãŒã©ãã«ã§ä¿å®å¯èœãªã¹ã¿ã€ã«ã·ãŒããäœæããããšãå¯èœã«ããŸãã
1. æ¬äŒŒã¯ã©ã¹ç¶æ ã®ããã®ãŠãŒãã£ãªãã£ã¯ã©ã¹
Tailwind CSSã®ãããªãŠãŒãã£ãªãã£ãã¡ãŒã¹ãCSSãã¬ãŒã ã¯ãŒã¯ã¯ããŠãŒãã£ãªãã£ã¯ã©ã¹ã®æŠå¿µãæ®åãããŸããããã®ãã¿ãŒã³ãæ¡çšããŠãäžè¬çãªæ¬äŒŒã¯ã©ã¹ç¶æ ã®åå©çšå¯èœãªã¯ã©ã¹ãäœæã§ããŸãã
äŸïŒåå©çšå¯èœãªãããŒããã³ãã©ãŒã«ã¹ãŠãŒãã£ãªãã£
.button:hoverãç¹°ãè¿ãèšè¿°ãã代ããã«ããããŒãŸãã¯ãã©ãŒã«ã¹ç¶æ
ã«ç¹åããã¹ã¿ã€ã«ãé©çšããã¯ã©ã¹ãäœæã§ããŸãã
/* Utility for hover background color */
.hover:hover {
background-color: #007bff;
}
/* Utility for focus outline */
.focus-outline:focus {
outline: 2px solid blue;
outline-offset: 2px;
}
/* Combine them */
.interactive-element {
padding: 10px;
border: 1px solid #ccc;
}
.interactive-element.hover:hover {
background-color: #eee;
color: #333;
}
.interactive-element.focus-outline:focus {
border-color: blue;
}
ãããã¯åçŽãªäŸã§ãããããŸããŸãªæ¬äŒŒã¯ã©ã¹ãšç¶æ ã«å¯ŸããŠããè€éãªãŠãŒãã£ãªãã£ãæ§ç¯ã§ããŸããéµã¯äžè²«ããåœåèŠåãæã€ããšã§ãã
2. BEMïŒBlock, Element, ModifierïŒãšæ¬äŒŒã¯ã©ã¹
BEMææ³ã¯ãä¿å®å¯èœã§åå©çšå¯èœãªCSSãäœæããã®ã«åªããŠããŸããæ¬äŒŒã¯ã©ã¹ãšå¹æçã«çµã¿åãããããšãã§ããŸãã
/* Block */
.card {
border: 1px solid #e0e0e0;
padding: 20px;
margin-bottom: 20px;
transition: box-shadow 0.3s ease;
}
/* Element */
.card__title {
font-size: 1.5em;
margin-bottom: 15px;
}
/* Modifier for hover state */
.card--hoverable:hover {
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
cursor: pointer;
}
/* Modifier for active state */
.card--active {
border-color: blue;
background-color: #e6f7ff;
}
/* Combining BEM with pseudo-classes for a focusable active card */
.card--active:focus {
outline: 2px dashed blue;
}
/* Targeting an element within a block's modified state */
.card--active .card__title {
color: navy;
}
BEMã¯ãã»ã¬ã¯ã¿ãŒãæç€ºçã§ãããã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåã«èª€ã£ãŠåœ±é¿ãäžããªãããšãä¿èšŒããŸãã修食åïŒModifierïŒã¯ãæ¬äŒŒã¯ã©ã¹ã«ãã£ãŠã¢ã¯ãã£ãåãããç¶æ ãå«ããããŸããŸãªç¶æ ã衚ãã®ã«æé©ã§ãã
3. CSS-in-JSã©ã€ãã©ãªãšåå©çšæ§
ReactãVueãAngularãªã©ã®JavaScriptãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠããéçºè ã«ãšã£ãŠãCSS-in-JSã©ã€ãã©ãªïŒäŸïŒStyled ComponentsãEmotionïŒã¯ãã¹ã¿ã€ã«ãã«ãã»ã«åããã³ã³ããŒãã³ãã¬ãã«ã®åå©çšæ§ã管çãã匷åãªæ¹æ³ãæäŸããŸãããããã¯ãCSSå ã«JavaScriptããžãã¯ãšããããã£ãçŽæ¥è£éããããšãå¯èœã«ããåçã§ã«ã¹ã¿ã ãªã»ã¬ã¯ã¿ãŒã广çã«äœæããŸãã
// Example using Styled Components in React
import styled from 'styled-components';
const StyledButton = styled.button`
padding: 10px 20px;
border: none;
background-color: ${props => props.primary ? '#007bff' : '#6c757d'};
color: white;
cursor: pointer;
transition: background-color 0.3s ease;
&:hover {
background-color: ${props => props.primary ? '#0056b3' : '#5a6268'};
}
&:focus {
outline: 2px solid ${props => props.primary ? '#007bff' : '#6c757d'};
outline-offset: 2px;
}
&:disabled {
background-color: #cccccc;
cursor: not-allowed;
}
`;
// Usage:
// <StyledButton primary>Click Me</StyledButton>
// <StyledButton>Another Button</StyledButton>
ãã®äŸã§ã¯ã&:hoverãš&:focusããããã®ç¶æ
ã®ã¹ã¿ã€ã«ãå®çŸ©ããããã«äœ¿çšãããŸãããããã®æ¬äŒŒã¯ã©ã¹ã«ãŒã«å
ã§ã³ã³ããŒãã³ãããããã£ïŒprimaryãªã©ïŒã䜿çšã§ããæ©èœã«ãããã¹ã¿ã€ãªã³ã°ã¯éåžžã«åçã§åå©çšå¯èœã«ãªããŸãã
4. 颿°åCSS / ãŠãŒãã£ãªãã£ãã¡ãŒã¹ãCSS
ãŠãŒãã£ãªãã£ãã¡ãŒã¹ãCSSãã¬ãŒã ã¯ãŒã¯ã¯ãã»ãŒãã¹ãŠã®CSSããããã£ã«å¯ŸããŠäºåå®çŸ©ãããã¯ã©ã¹ãæäŸããŸãããã®ã¢ãããŒãã¯æ¬è³ªçã«åå©çšæ§ãä¿é²ããè€æ°ã®ãŠãŒãã£ãªãã£ã¯ã©ã¹ãçµã¿åãããŠè€éãªã¹ã¿ã€ãªã³ã°ãå¯èœã«ããŸããæ¬äŒŒã¯ã©ã¹ã¯ãã°ãã°ç¹å®ã®ãã¬ãã£ãã¯ã¹ãéããŠåŠçãããŸãã
<!-- Example using Tailwind CSS (conceptual) -->
<button class="px-4 py-2 rounded bg-blue-500 text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75">
Interactive Button
</button>
ããã§ã¯ãhover:bg-blue-700ãfocus:outline-noneãªã©ã®ã¯ã©ã¹ããããããã®æ¬äŒŒã¯ã©ã¹ã«çŽæ¥ã¹ã¿ã€ã«ãé©çšããŸããããã«ãããæç€ºçãªã³ã³ããŒãã³ãã¬ãã«ã®CSSå®çŸ©ãªãã§ãã¹ã¿ã€ãªã³ã°ãé«åºŠã«æ§æå¯èœã§åå©çšå¯èœã«ãªããŸãã
ã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãšåå©çšæ§ã«é¢ããã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãŠãŒã¶ãŒåãã«èšèšããå ŽåãCSSãã¢ã¯ã»ã¹ãããããããã©ãŒãã³ã¹ãé«ããé©å¿æ§ãããããšã確èªããããšãæãéèŠã§ããã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãšåå©çšæ§ã®ååãã©ã®ããã«é©çšãããããæ¬¡ã«ç€ºããŸãã
1. ã¢ã¯ã»ã·ããªãã£ãã¡ãŒã¹ã
ãã©ãŒã«ã¹ç¶æ
ïŒã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã«ã¯ãåžžã«æç¢ºã§èŠèŠçãªãã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ãŒãããããšã確èªããŠãã ããããã©ãŒã«ã¹ç¶æ
ã匷åããã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒïŒäŸïŒã¢ãã³ãã©ãŠã¶çšã®:focus-visibleãŸãã¯ã«ã¹ã¿ã ãã©ãŒã«ã¹ã¹ã¿ã€ã«ïŒã¯ãäžçäžã®ããŒããŒãããã²ãŒã·ã§ã³ãŠãŒã¶ãŒã«ãšã£ãŠäžå¯æ¬ ã§ãã
è²ã®ã³ã³ãã©ã¹ãïŒã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒã䜿çšããŠãããŒãŸãã¯ãã©ãŒã«ã¹æã«è²ã倿Žããå Žåã¯ãåžžã«èæ¯ãšã®ååãªè²ã®ã³ã³ãã©ã¹ãã確èªããWCAGã¬ã€ãã©ã€ã³ã«æºæ ããŠãã ãããããã¯ããã¹ãŠã®å°åã®èŠèŠé害ã®ãããŠãŒã¶ãŒã«ãšã£ãŠéåžžã«éèŠã§ãã
èšèªãšãã±ãŒã«ïŒCSSèªäœã¯èšèªã«äŸåããŸããããCSSã«ãã£ãŠã¹ã¿ã€ã«èšå®ãããããã¹ãã³ã³ãã³ãã¯ããã§ã¯ãããŸãããç°ãªãæåã»ãããŸãã¯ããã¹ãé·ã®èšèªã䜿çšãããŠããå Žåã§ããåå©çšå¯èœãªãã¿ãŒã³ãããã¹ããç Žæããªãããšã確èªããŠãã ãããããšãã°ãé·ãåœåãæã€ãã¿ã³ã®æ°Žå¹³æ¹åã®ãªãŒããŒãããŒãªã©ã§ãã
2. ããã©ãŒãã³ã¹ãšæé©å
ç¹ç°åºŠïŒã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãè€éã«ãªãå ŽåããããŸãããç¹ç°åºŠã«ã¯æ³šæããŠãã ãããé床ã«å ·äœçãªã»ã¬ã¯ã¿ãŒã¯ãã¹ã¿ã€ã«ããªãŒããŒã©ã€ããããšãã«åé¡ãåŒãèµ·ããå¯èœæ§ããããŸããé©åã«æ§é åãããCSSïŒBEMããŠãŒãã£ãªãã£ã¯ã©ã¹ãªã©ïŒã¯ãç¹ç°åºŠã®ç®¡çã«åœ¹ç«ã¡ãŸãã
ãã¡ã€ã«ãµã€ãºïŒåå©çšå¯èœãªCSSãã¿ãŒã³ã¯ãã¹ã¿ã€ã«ãç¹°ãè¿ããããå šäœçãªCSSãã¡ã€ã«ãµã€ãºãåæžããŸããããã¯ãäžçã®å€ãã®å°åã§æ®åããŠããé ãã€ã³ã¿ãŒãããæ¥ç¶ã®ãŠãŒã¶ãŒã«å©çããããããŸãã
ãã©ãŠã¶ãµããŒãïŒäœ¿çšããé«åºŠãªæ¬äŒŒã¯ã©ã¹ãCSSæ©èœãåºç¯ãªãã©ãŠã¶ãµããŒããæã£ãŠããããšã確èªããŠãã ãããå¿
èŠã«å¿ããŠãã©ãŒã«ããã¯ãããªãã£ã«ã䜿çšããŠãã ãããããšãã°ã:focus-visibleã¯ããã¢ã¯ã»ã¹ããããã§ãããå€ããã©ãŠã¶ã«ã¯ãã©ãŒã«ããã¯ãå¿
èŠã«ãªãå ŽåããããŸãã
3. åœéåïŒi18nïŒãšããŒã«ãªãŒãŒã·ã§ã³ïŒl10nïŒ
æ¹åæ§ïŒã¢ã©ãã¢èªãããã©ã€èªã®ããã«å³ããå·Šã«æžãããïŒRTLïŒèšèªã®å ŽåãCSSã¯è«çããããã£ãšdir="rtl"屿§ãæäŸããŸããåå©çšå¯èœãªã»ã¬ã¯ã¿ãŒã¯ããããã®å€æŽã« gracefully é©å¿ããå¿
èŠããããŸããããšãã°ãmargin-leftã®ä»£ããã«margin-inline-startã䜿çšãããªã©ã§ãã
/* Using logical properties for directionality */
.rtl-container {
direction: rtl;
}
.rtl-container .element {
margin-inline-start: 10px; /* Equivalent to margin-left in LTR, margin-right in RTL */
margin-inline-end: 0;
}
åäœïŒãã©ã³ããµã€ãºãééãã¬ã€ã¢ãŠãã«ã¯ãemãremãããŒã»ã³ããŒãžãªã©ã®çžå¯Ÿåäœã®äœ¿çšãæ€èšããŠãã ãããããã«ãããå°åã«é¢ä¿ãªããããŸããŸãªè¡šç€ºèšå®ãããã¹ãèšå®ãæã€ãŠãŒã¶ãŒã«å¯ŸããŠèŠçŽ ãé©åã«ã¹ã±ãŒãªã³ã°ãããŸãã
æåçé©å¿æ§ïŒCSSãæè¡çåŽé¢ãåŠçããäžæ¹ã§ããã¶ã€ããŒã¯è²ã®æå³ãã¢ã€ã³ã³ãã¬ã€ã¢ãŠãã®å¥œã¿ã«ãããæåçãã¥ã¢ã³ã¹ãèªèããå¿ èŠããããŸããåå©çšå¯èœãªã³ã³ããŒãã³ãã¯ãå¿ èŠã«å¿ããŠç°ãªãå°åã«åãããŠããããªãã¶ã€ã³å€æŽã«å¯Ÿå¿ã§ããååãªæè»æ§ãæã€ã¹ãã§ãã
CSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãšåå©çšæ§ã®ãã¹ããã©ã¯ãã£ã¹
æ¬äŒŒã¯ã©ã¹æ©èœã®åŒ·åãšåå©çšæ§ã®ããã«CSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒã广çã«å®è£ ããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããã
- CSSææ³ãæ¡çšããïŒBEMãOOCSSãSMACSSããŸãã¯ãŠãŒãã£ãªãã£ãã¡ãŒã¹ãã®ã¢ãããŒãã®ãããã§ãã£ãŠããäžè²«ããææ³ãæã€ããšããæŽçãããåå©çšå¯èœãªCSSã®éµã§ãã
- å¯èªæ§ãåªå ããïŒå¹çæ§ã¯éèŠã§ãããã³ãŒãã®å¯èªæ§ãç ç²ã«ããªãã§ãã ãããæç¢ºãªåœåèŠåã䜿çšããç®çã®å¹æãéæãã€ã€ã»ã¬ã¯ã¿ãŒãã§ããã ãã·ã³ãã«ã«ä¿ã¡ãŸãã
- CSS倿°ãåºç¯å²ã«æŽ»çšããïŒããŒãèšå®ãééãåçãªå€ã«CSSã«ã¹ã¿ã ããããã£ã掻çšããŸããããã«ãããã°ããŒãã«ãªå€æŽãã³ã³ããŒãã³ãã®ããªãšãŒã·ã§ã³ãã¯ããã«å®¹æã«ãªããŸãã
- `is-` ããã³ `has-` ãã¬ãã£ãã¯ã¹ã掻çšããïŒJavaScriptã§ç®¡çãããã«ã¹ã¿ã ç¶æ
ã®å Žåã
is-activeãis-disabledãhas-errorãªã©ã®ãã¬ãã£ãã¯ã¹ã¯ãã¯ã©ã¹ã®ç®çãæç¢ºã«ç€ºããŸãã - éåºŠã«æ±çšçãªã»ã¬ã¯ã¿ãŒãé¿ããïŒåå©çšæ§ã¯è¯ãããšã§ããããªãŒããŒã©ã€ããå°é£ã«ãªã£ãããæå³ããªãå¯äœçšã«ã€ãªãã£ããããã»ã©æ±çšçãªã»ã¬ã¯ã¿ãŒã¯é¿ããŠãã ããã
- ããã€ã¹ãšãã©ãŠã¶éã§ã®ãã¹ãïŒã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãšæ¬äŒŒã¯ã©ã¹ç¶æ ããããŸããŸãªããã€ã¹ãç»é¢ãµã€ãºãããã³äžçäžã®ç°ãªãåžå Žã§äººæ°ã®ãããã©ãŠã¶ã§æ£ããæ©èœããæå³ãããšããã«èŠããããšã確èªããŠãã ããã
- ãã¿ãŒã³ãææžåããïŒè€éãªã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãã¿ãŒã³ãäœæããå Žåã¯ããããžã§ã¯ãã®ã¹ã¿ã€ã«ã¬ã€ããŸãã¯ããã¥ã¡ã³ãå ã«ãããææžåããŠãã ãããããã¯ãä»ã®éçºè ããããã广çã«çè§£ã䜿çšããã®ã«åœ¹ç«ã¡ãŸãã
çµè«
CSSã«ã¹ã¿ã ã»ã¬ã¯ã¿ãŒãç¹ã«æ¬äŒŒã¯ã©ã¹ã®æ©èœãåµé çã«æ¡åŒµããåå©çšæ§ãä¿é²ãããã®ã¯ãçŸä»£ã®ãŠã§ãéçºã«ãšã£ãŠåŒ·åãªããŒã«ã§ããé«åºŠãªæ¬äŒŒã¯ã©ã¹ã®çµã¿åããããŠãŒãã£ãªãã£ã¯ã©ã¹ãBEMã®ãããªåŒ·åãªCSSææ³ãžã®æºæ ãªã©ã®ãã¯ããã¯ãç¿åŸããããšã§ãéçºè ã¯ããå¹ççã§ä¿å®å¯èœã§åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæã§ããŸãã
ã°ããŒãã«ãªãŠãŒã¶ãŒã«ãšã£ãŠããããã®ãã©ã¯ãã£ã¹ãæ¡çšããããšã¯ãéçºããã»ã¹ã匷åããã ãã§ãªããããã¢ã¯ã»ã¹ãããããããã©ãŒãã³ã¹ãé«ããé©å¿æ§ã®ãããŠã§ããšã¯ã¹ããªãšã³ã¹ã«è²¢ç®ããŸããã«ã¹ã¿ã CSSãœãªã¥ãŒã·ã§ã³ãèšèšããã³å®è£ ããéã«ã¯ãåžžã«åœéåãã¢ã¯ã»ã·ããªãã£æšæºãããã³ãã©ãŠã¶ã®äºææ§ãèæ ®ããããšãå¿ããªãã§ãã ãããããŸããŸãªç¶æ ãã€ã³ã¿ã©ã¯ã·ã§ã³ããšã¬ã¬ã³ãã«åŠçããåå©çšå¯èœãªãã¿ãŒã³ãäœæããèœåã¯ãäžçäžã§ã¹ã±ãŒã©ãã«ã§æåãããŠã§ããããžã§ã¯ããæ§ç¯ããããã®éµãšãªããŸãã